兩個字串s
和t
。定義s
可以被t
整除為s = t + t + t + .....
,即s
只由數個t
組成。
題目將給定兩個字串str1
與str2
,找出最大的公因字串x
,使得x
為最長且可以同時整除str1
與str2
。str1
與str2
只包含大寫的英文字母。
題目原文與所給的範例及限制如下:
x
。判斷方法為直接把兩個字串合在一起,然後再把順序倒過來合在一起。如果這兩個合成的字串相等的話,代表有公因字串。反之,不相等就代表沒有公因字串,代表沒有共同重複的子字串。class Solution:
def gcdOfStrings(self, str1: str, str2: str) -> str:
if str1 + str2 != str2 + str1:
return ""
def gcd(x, y):
if y == 0:
return x
else:
return gcd(y, x%y)
return str1[:gcd(len(str1), len(str2))]